#pragma once

#include<iostream>
#include<string>
#include<fstream>
#include<unordered_map>
#include"Log.hpp"

const string dictname="./dict.txt";
const string sep=":";

static bool Split(string&s,string*part1,string*part2){
    auto pos=s.find(sep);
    if(pos==string::npos) return false;
    *part1=s.substr(0,pos);
    *part2=s.substr(pos+1);
    return true;
}
class init
{
public:
    init()
    {
        ifstream in(dictname);//以读取方式打开dictname文件
        if(!in.is_open())
        {
            lg(Fatal, "ifstream open %s error", dictname.c_str());
            exit(1);
        }
        string line;
        while(getline(in,line))//预处理工作
        {
            string part1,part2;
            Split(line,&part1,&part2);//处理
            dict.insert({part1,part2});
        }
        in.close();
        //cout<<"预处理完成"<<endl;
    }
    string translation(const string &key)
    {
        auto iter=dict.find(key);
        if(iter==dict.end()){
            return "Unkown";
        }   
        else return iter->second;
    }

private:
    unordered_map<string,string>dict;
};